<?php

class PerguntaInscricaoAlternativa
{
	private $idAlternativa;
	private $idPergunta;
	private $alternativa;
	private $padrao;
	
	public static function inserir($idPergunta, $alternativas, $padrao = false) {
		if (PerguntaInscricaoAlternativa::validar($idPergunta, $alternativas, $padrao)) {
			if ($padrao)
				$tabelaAlternativasBanco	=	'perguntasInscricaoPadraoAlternativas';
			else
				$tabelaAlternativasBanco	=	'perguntasInscricaoAlternativas';
			
				
			$alternativasInseridas	=	0;
			foreach ($alternativas as $alternativa) {
				if ($alternativa != '') {
					$strQuery	=	'INSERT INTO ' . $tabelaAlternativasBanco . ' VALUES(default, ' . $idPergunta .  ', "' . $alternativa . '");';
					
					if (BancoDados::query($strQuery))
						$alternativasInseridas++;
				}
			}
			
			if ($alternativasInseridas == sizeof($alternativas)) {
				return true;
			}
			else {
				PerguntaInscricaoAlternativa::apagarAlternativas($idPergunta, $padrao);
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public static function validar($idPergunta, $alternativas, $padrao) {
		$validou	=	true;
		
		return $validou;
	}
	
	public static function apagarAlternativas ($idPergunta, $padrao = false) {
		if (PerguntaInscricaoAlternativa::validarBusca($idPergunta)) {
			if ($padrao)
				$tabelaAlternativasBanco	=	'perguntasInscricaoPadraoAlternativas';
			else
				$tabelaAlternativasBanco	=	'perguntasInscricaoAlternativas';
				
			$strQuery	=	'DELETE FROM ' . $tabelaAlternativasBanco . ' WHERE idPergunta = ' . $idPergunta . ';';
			
			return BancoDados::query($strQuery);
		}
		else {
			return false;
		}
	}
	
	public static function buscar($idPergunta, $padrao = false, $ordenacaoAtual = NULL, $ordemAtual = NULL, $resultadosPagina = NULL, $paginaAtual = NULL) {
		if (PerguntaInscricaoAlternativa::validarBusca($idPergunta)) {
			if ($padrao)
				$tabelaAlternativasBanco	=	'perguntasInscricaoPadraoAlternativas';
			else
				$tabelaAlternativasBanco	=	'perguntasInscricaoAlternativas';
				
			$strQuery	=	'SELECT * FROM ' . $tabelaAlternativasBanco . ' WHERE ';
			
			$strQuery	.=	$idPergunta != NULL ? 'idPergunta = ' . $idPergunta . ' AND ' : '';
			
			//CONSERTANDO FINAL DA QUERY
			$strQuery	=	preg_replace('/ WHERE $/', ' ', $strQuery);
			$strQuery	=	preg_replace('/ AND $/', ' ', $strQuery);
			
			$strQuery	.=	' GROUP BY idAlternativa';
			
			$strQueryCount	=	'SELECT COUNT(*) AS qtdResultados FROM (' . $strQuery . ') AS queryOriginal;';
			
			if ($resultadoCount = BancoDados::query($strQueryCount)) {
				foreach($resultadoCount as $resultado) {
					$qtdResultados	=	$resultado['qtdResultados'];
				}
				
				if ($qtdResultados > 0) {
					$paginaAtual	=	$paginaAtual == NULL ? 1 : $paginaAtual;
					$ordenacaoAtual	=	$ordenacaoAtual == NULL ? 'idAlternativa' : $ordenacaoAtual;
					$ordemAtual		=	$ordemAtual == NULL ? 'ASC' : ($ordemAtual == 'desc' ? 'DESC' : 'ASC');
					
					$strQuery	.=	' ORDER BY ' . $ordenacaoAtual . ' ' . $ordemAtual;
					
					if ($resultadosPagina != NULL) {
						$qtdPaginas		=	ceil($qtdResultados / $resultadosPagina);
						$qtdPaginas		=	$qtdPaginas == 0 ? 1 : $qtdPaginas;
						
						$strQuery		.=	' LIMIT ' . $resultadosPagina . ' OFFSET ' . (($paginaAtual - 1) * $resultadosPagina);
					}
					else {
						$qtdPaginas	=	1;
					}
					
					$strQuery	.=	';';
					
					$resultado	=	BancoDados::query($strQuery);
					
					if (is_array($resultado)) {
						return array ('listaResultados' => $resultado, 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => $qtdPaginas);
					}
					else {
						return false;
					}
				}
				else {
					return array('listaResultados' => array(), 'qtdResultadosTotal' => 0, 'qtdPaginas' => 0);
				}
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public static function validarBusca($idPergunta) {
		$validou	=	true;
		
		if (!validaNumero($idPergunta)) {
			$validou	=	false;
			//TODO MENSAGEM?
		}
		
		return $validou;
	}
}